package cn.com.blueInfo.bpm.system.request;

import cn.com.blueInfo.bpm.common.request.BaseDTO;
import cn.com.blueInfo.bpm.common.request.BaseQueryDTO;
import cn.com.blueInfo.bpm.system.enums.RoleResourcePermission;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotNull;

/**
 * 角色-资源关联表 接收参数机校验
 * @author suxch
 * @since 2025-08-24 01:37:55
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(description = "角色-资源关联 接收参数及校验")
public class RoleResourceDTO extends BaseDTO {

    /** 角色ID */
    @NotNull(message = "角色ID 不能为空")
    @Schema(description = "角色ID")
    private Long roleId;
    /** 资源ID */
    @NotNull(message = "资源ID 不能为空")
    @Schema(description = "资源ID")
    private Long resourceId;
    /** 权限操作（按钮：1-可点击，0-禁用。字段：1-可见，0-隐藏） */
    @NotNull(message = "权限操作 不能为空")
    @Schema(description = "权限操作（按钮：1-可点击，0-禁用。字段：1-可见，0-隐藏）")
    private RoleResourcePermission permission;

    /**
     * 角色-资源关联 接收分页查询参数
     * @author suxch
     * @since 2025-08-21 05:08:55
     */
    @Data
    @EqualsAndHashCode(callSuper = true)
    @Schema(description = "角色-资源关联 接收分页查询参数")
    public static class QueryDTO extends BaseQueryDTO {

        /** 角色ID */
        @Schema(description = "角色ID")
        private Long roleId;
        /** 资源ID */
        @Schema(description = "资源ID")
        private Long resourceId;
        /** 权限操作（按钮：1-可点击，0-禁用。字段：1-可见，0-隐藏） */
        @Schema(description = "权限操作（按钮：1-可点击，0-禁用。字段：1-可见，0-隐藏）")
        private RoleResourcePermission permission;

    }

    /**
     * 角色-资源关联 接收部分更新参数及校验
     * @author suxch
     * @since 2025-08-21 05:08:55
     */
    @Data
    @EqualsAndHashCode(callSuper = true)
    @Schema(description = "角色-资源关联 接收部分更新参数及校验")
    public static class UpdatePartialDTO extends BaseDTO {}

}